package model

import (
	"context"
	"gorm.io/gorm"
	"time"
)

type ChatSessions struct {
	Id        uint           `gorm:"column:id;type:bigint UNSIGNED;comment:主键ID;primaryKey;not null;" json:"id"`         // 主键ID
	UserId    uint           `gorm:"column:user_id;type:bigint;comment:所需用户;not null;" json:"user_id"`                   // 所需用户
	Title     string         `gorm:"column:title;type:varchar(255);comment:会话标题（默认取首条用户消息前20字符);not null;" json:"title"` // 会话标题（默认取首条用户消息前20字符)
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);not null;" json:"created_at"`
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (chs *ChatSessions) TableName() string {
	return "chat_sessions"
}

// 1. 创建会话
func (chs *ChatSessions) Create(ctx context.Context, db *gorm.DB) error {
	return db.WithContext(ctx).Create(chs).Error
}

// 2. 根据 userId 查询会话列表（普通函数，不是方法）
func ListByUser(ctx context.Context, db *gorm.DB, userId uint64) ([]ChatSessions, error) {
	var list []ChatSessions
	err := db.WithContext(ctx).
		Where("user_id = ?", userId).
		Order("updated_at DESC").
		Find(&list).Error
	return list, err
}
